// 练习1:1-10000以内的完数
// 完数：该数的因子之和等于这个数本身
// 6=1+2+3
// 28=1+2+14+4+7=28

// let i=1;

// while(i<=10000){
//     let sum=0;//因子之和
//     // 求每个数（i）的因子,求因子之和
//     for(let j=1;j<i;j++){
//         if(i%j==0){
//             sum+=j;//1
//         }
//     }
//     // console.log(i,sum);//  3  2
//     // 因子之和与这个数本身进行相等比较
//     if(i==sum){
//         console.log(i);
//     }
//     i++;
// }


// 练习2：S=a+aa+aaa+aaaa  输入底数和次数，最后求和
// 举例：底数：a=2,次数：4   S=2+22+222=246
let readline = require("readline-sync");
// let flag=true;//开关
// while(flag){
//     console.log("请输入底数：");
//     let a=readline.question("");//"2"
//     console.log("请输入次数：");
//     let count=readline.question("");

//     if(!isNaN(a) && !isNaN(count) && a>0 && count>0){
//         // 操作
//         // 组合数字并求和
//         let x=a;//组合数字
//         let s=0;//求和
//         let str=a;//拼接算式
//         for(let i=1;i<count;i++){
//             x+=a;//"2"
//             s+=x*1;//s=0+"2"*1=2
//             str+="+"+x;
//         }
//         console.log(str+"="+s);
//         flag=false;//关闭循环开关

//     }else{
//         console.log("输入有误！请重新输入数字！");
//     }
// }


// 练习3：正着打星星
// 用户输入一个数字，表示行数，就输入对应行数的星星 6
// let h=6;//行数
// let i;//表示当前行数
// 5      *          1       
// 4     ***         3
// 3    *****        5
// 2   *******       7
// 1  *********      9
// 0 ***********     11
// h-i              2*i-1


// let flag = true;
// while (flag) {
//     console.log("请输入行数：");
//     let line = readline.question(""); //行数
//     if (!isNaN(line)) {
//         // 双重循环
//         // 外循环控制行数
//         for (let i = 1; i <= line; i++) {
//             // 内循环拼接空格
//             let space="";//拼接空格
//             for(let j=1;j<=line-i;j++){
//                 space+=" ";
//             }

//             // 内循环拼接星星
//             let star="";//拼接星星
//             for(let x=1;x<=2*i-1;x++){
//                 star+="*";
//             }
//             console.log(space+star);
//         }
//         flag=false;
//     } else {
//         console.log("输入有误！请重新输入！");
//     }
// }


//练习4：倒着打星星
// 用户输入一个数字，表示行数，就输出对应行数的星星 6
// let h=6;//行数
// let i;//表示当前行数
// 0 ***********     11
// 1  *********      9
// 2   *******       7
// 3    *****        5
// 4     ***         3
// 5      *          1       
// i-1              2*line-(2*i-1)

// 方法一：
// let flag = true;
// while (flag) {
//     console.log("请输入行数：");
//     let line = readline.question(""); //行数
//     if (!isNaN(line)) {
//         // 双重循环
//         // 外循环控制行数
//         for (let i = 1; i <= line; i++) {
//             // 内循环拼接空格
//             let space="";//拼接空格
//             for(let j=1;j<=i-1;j++){
//                 space+=" ";
//             }

//             // 内循环拼接星星
//             let star="";//拼接星星
//             for(let x=1;x<=2*line-(2*i-1);x++){
//                 star+="*";
//             }
//             console.log(space+star);
//         }
//         flag=false;
//     } else {
//         console.log("输入有误！请重新输入！");
//     }
// }

// 方法二：用正着打星星的思路，但是倒着输出
// let flag = true;
// while (flag) {
//     console.log("请输入行数：");
//     let line = readline.question(""); //行数
//     if (!isNaN(line)) {
//         // 双重循环
//         // 外循环控制行数
//         for (let i = line; i>=1; i--) {
//             // 内循环拼接空格
//             let space="";//拼接空格
//             for(let j=1;j<=line-i;j++){
//                 space+=" ";
//             }

//             // 内循环拼接星星
//             let star="";//拼接星星
//             for(let x=1;x<=2*i-1;x++){
//                 star+="*";
//             }
//             console.log(space+star);
//         }
//         flag=false;
//     } else {
//         console.log("输入有误！请重新输入！");
//     }
// }


// 练习5：斐波拉契数列：前两个数的和等于后一个数
// 1 1 2 3 5 8 13 21 34 55
// 用户输入一个数字，输出该数字对应的斐波拉契数
// 举例：用户输入8，输出21

let num=5;//用户输入的数字
let a=1,b=1;
let temp=0;//中间变量，用于两个数之间交换值
for(let i=3;i<=num;i++){
    temp=b;
    b=a+b;
    a=temp;
}
console.log(b);